#include "outdata.h"
#include "control.h"

int SpeedInnerControl(int nPulse,int nTarget)//速度内环控制
{
    int nError;//偏差
    float fP = 10.0, fI = 0.9;//这里只用到PI，参数由电机的种类和负载决定

    nError = nPulse - nTarget;//偏差 = 目标速度 - 实际速度 

    nPwmBais = fP * (nError - nErrorPrev) + fI * nError;//增量式PI控制器

    nErrorPrev = nError;//保存上一次偏差

    nPwm += nPwmBais;//增量输出

    if(nPwm > 999) nPwm = 999;//限制上限，防止超出PWM量程
    if(nPwm <-999) nPwm =-999;

    OutData[0]=(float)nPulse;//速度实际值
    OutData[1]=(float)nTarget ;//速度目标值
    OutData[2]=(float)nPwm;//PWM输出值

    return nPwm;//返回输出值
}
